Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Posted in Uncategorized | 1 Comment

Validar en JavaScript un WebDateChooser de infragistics

En este momento quiero compartir con ustedes como validar un par de fechas en un formulario web que son obligatorias y que a la vez la fecha final obliga a ser mayor a la fecha inicial. La validación la realizo obteniendo los objetos  

El escenario puede ocurrir cuando realizan una búsqueda en un formulario web o se quiere generar un reporte donde se piden las fechas.

Nota:

Este ejemplo está diseñado con dos controles infragistics WebDataChooser  espero le sea de utilidad.

<asp:ImageButton ID="btnValidarFechas" runat="server" ImageUrl="~/Imagenes/Botones/Generar.gif" OnClientClick="ValidarRangoFechasWebDataChooser" />

 

El botón anterior llama al método JavaScrip ValidarRangoFechasDataChooser cuando el usuario en la pagina web da clic en el Bóton btnValidarFechas

function ValidarRangoFechasWebDataChooser()

{

var cadFechaIni = igdrp_getComboById(‘<%=wdcFechaInicial.ClientID%>’);

var cadFechaFin = igdrp_getComboById(‘<%=wdcFechaFinal.ClientID%>’);

if( cadFechaIni.getText()=="" || cadFechaFin.getText()= ="")

{

strMensajeError = "La fecha inicial y final son obligatorias" ;

alert(strMensajeError);

return;

}

else

{

//array que utilizo para separar dia, mes y año en las fecha inicial

var ArrFechaIni = new Array();

//array que utilizo para separar dia, mes y año en las fecha final

var ArrFechaFin = new Array();

//separo el dia, mes y año en el array para la fecha inicial

ArrFechaIni = cadFechaIni.split("-");

//separo el dia, mes y año en el array para la fecha final

ArrFechaFin = cadFechaFin.split("-");

//agregar un cero a los dias o meses menores a 10

if(ArrFechaIni[1].length==1)

ArrFechaIni[1]= "0" + ArrFechaIni[1];

if(ArrFechaIni[2].length==1)

ArrFechaIni[2]= "0" + ArrFechaIni[2];

if(ArrFechaFin[1].length==1)

ArrFechaFin[1]= "0" + ArrFechaFin[1];

if(ArrFechaFin[2].length==1)

ArrFechaFin[2]= "0" + ArrFechaFin[2];

//uno la cadena de la fecha en formato YYYYMMDD

var cadFechaIni = ArrFechaIni[0]+ ArrFechaIni[1]+ ArrFechaIni[2];

var cadFechaFin = ArrFechaFin[0]+ ArrFechaFin[1]+ ArrFechaFin[2];

//se pasa a numero entero las fechas

cadFechaIni=parseInt(cadFechaIni)

cadFechaFin=parseInt(cadFechaFin)

//compara las fecha inicial y final en formato YYYYMMDD

if (cadFechaFin < cadFechaIni)

{

strMensajeError += " Error la fecha Inicial no puede ser posterior a la fecha final";

alert(strMensajeError);

return;

}

}

}

Posted in Infragistics | Leave a comment

Ejecutar archivos flash (swf) en HTML

En este ejemplo se ejecuta un archivo con extensión .swf  con el nombre Osi1.swf realizado en la herramienta de flash, el archivo se visualiza en una pagina HTML.
 
Codigo HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;

<

html xmlns="http://www.w3.org/1999/xhtml&quot; >

<

head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Abrir un archivo flash en HTML</title>

</head>

<body>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"

codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0&quot;

width="800" height="600" align="top">

<param name="movie" value="Osi1.swf"/>

<param name="quality" value="high"/>

<param name="allowScriptAccess" value="sameDomain" />

<param name="allowFullScreen" value="false" />

<embed src="Osi1.swf" width="800" height="600" align="top" quality="high"

pluginspage="http://www.macromedia.com/go/getflashplayer&quot;

type="application/x-shockwave-flash"></embed>

</object>

</body>

</html>

Posted in HTML | Leave a comment

Borrar registros duplicados usando SQL

Borrar registros duplicados usando SQL

 

El siguiente procedimento almacenado es un ejemplo o guía que te permitira eliminar registros duplicados de una tabla y dejando un registro (1) por cada duplicado. Te sugiero hacer primero un conteo de los registros que tienes y que realices una sumatoria de los registros duplicados que se obtiene del primer select.

 

Valor Duplicado1   5

Valor Duplicado2   5

Valor Duplicado3   5

Valor Duplicado4   4

Valor Duplicado5   4

Valor Duplicado6   3

 

Por ejemplo el total de la sumatoria es 26 a este valor le restamos la cantidad de  valores duplicados que es 6.

 

El total de registros duplicados a eliminar es 20. Y con un select del total de filas de la tabla le restas 20 y este sera el total de filas que deberas tener al final de jecutar el siguiente procedimiento almacenado. 

 

 

/********************************************************************************************************

* Elaborado Por     :   Omar Acosta                                                      *

* Acción            :   Eliminar duplicados de una tabla con sql server 2000 o 2005     *

* Fecha Creación    :   2009/10/14                                                                      *

*********************************************************************************************************/

CREATE PROCEDURE [dbo].[Duplicados]

AS

–INICIALIZAMOS LA TRANSACCION

BEGIN TRANSACTION

 

DECLARE @VALORDUPLICADO VARCHAR(20)

DECLARE @NUMVECESDUPLICADO INT

            –Se declara el cursor principal que obtiene el valor

                  –del campo duplicado y el numero de veces que se repite

            DECLARE CURSOR_DUPLICADOS CURSOR FOR

 

                  –usted debe reemplazar el nombre de la tabla y el nombre del

                  –campo por el cual va a eliminar este ejemplo lo realize con la tabla GIFCONSUMO

                  SELECT     VEHPLACA AS ValorDuplicado, COUNT(1) AS NumVecesDuplicado

                  FROM         GIFCONSUMO

                  GROUP BY VEHPLACA

                  HAVING      (COUNT(1) > 1)

                  ORDER BY NumVecesDuplicado

 

            –Recorre el cursor

            OPEN CURSOR_DUPLICADOS

            FETCH NEXT FROM CURSOR_DUPLICADOS

            INTO @VALORDUPLICADO,@NUMVECESDUPLICADO 

                 

            WHILE @@FETCH_STATUS = 0

            BEGIN      

                                   –para controlar que no se borren todos los registros

                                   –y se mantenga un valor en la tabla

                                   DECLARE @CONTADOR INT  

                                   SET @CONTADOR =1

                                   — el tipo de dato depende del valor definido para la tabla

                                   DECLARE @ID NUMERIC(18,0)                          

                                   –se elimina el registro(s) duplicados pero se deja uno solo.

                                   DECLARE CURSOR_BORRARDUPLICADOS CURSOR FOR

                                   –se consulta los id de los valores duplicados

                                   SELECT     CONID AS ID

                                   FROM         GIFCONSUMO                             

                                   WHERE VEHPLACA = @VALORDUPLICADO                                

                                   –Recorre el cursor de boorado de registros

                                   OPEN CURSOR_BORRARDUPLICADOS

                                   FETCH NEXT FROM CURSOR_BORRARDUPLICADOS

                                   INTO @ID

 

                                   WHILE @@FETCH_STATUS = 0

                                   BEGIN

                                         –ELIMINAMOS LOS REGISTROS DUPLICADOS

                                         –MENOS EL ULTIMO REGISTRO

                                         IF(@CONTADOR < @NUMVECESDUPLICADO)

                                             DELETE GIFCONSUMO WHERE CONID= @ID

                                         –aumentamos el contador para controloar no borrar

                                         –el ultimo registro

                                  SET @CONTADOR = @CONTADOR + 1

                                         FETCH NEXT FROM CURSOR_BORRARDUPLICADOS

                                         INTO @ID

                                   END

                                   –cierro y libero el cursor interno

                                   CLOSE CURSOR_BORRARDUPLICADOS

                                   DEALLOCATE CURSOR_BORRARDUPLICADOS

                        –cierro y libero el cursor principal

                        FETCH NEXT FROM CURSOR_DUPLICADOS

                        INTO @VALORDUPLICADO,@NUMVECESDUPLICADO

            END

            CLOSE CURSOR_DUPLICADOS

            DEALLOCATE CURSOR_DUPLICADOS

–ingresa por este lado si ocurre error o al finalizar el proceso               

IF @@ERROR <> 0

BEGIN

    ROLLBACK TRANSACTION

    RETURN 1

END

    COMMIT TRANSACTION

 

 

 

 

 

 

Posted in SQL Server | Leave a comment

Crear Formulas en Crystal Report con VS2008

Crear Formulas en Crystal Report :

Explicare como crear una formula en Criystal Report en este caso tengo instalado en mi PC Visual  Studio 2008 y abriré un reporte que ya tengo con anterioridad en uno de mis proyectos el objetivo de este artículo es explicar solamente cómo crear formulas  y no reportes como tal.

Entonces desde el explorador de soluciones abriré uno de mis reportes como ilustro a continuación:

Observe que en la imagen anterior se encuentra una barra de herramientas en el costado izquierdo superior con el nombre “Field Explorer” o explorador de campos que nos permitirá adicionar al reporte Formulas, Campos Especiales, y arrastrar campos de la base de datos al reporte; de clic en esta barra para ver sus funcionalidades.

Para crear una nueva fórmula de clic derecho en la sección “Formula fields” de la anterior barra anterior y de clic en “New” o nuevo.  Se abre la ventana “Formula Name”  en la caja de texto “Name” digite un nombre nemotécnico para la función y de clic en el botón “Use Editor”:

El reporte está vinculado a un origen de datos que puede ser un archivo XML, una Base de Datos u otro  para este ejemplo SQL Server 2005.

Se abre una nueva ventana que permite escribir código visual Basic o código cristal   para crear la función(es) para este ejemplo utilizare Sintaxis Crystal.  

FORMULA PARA CONCATENAR CAMPOS EN CRYSTAL REPORT

Formula “NombreContacto” concatena los campos NombreContacto y ApellidosContacto

Código fuente:

{ReporteMovimientos;1.NombreContacto} +  " " + {ReporteMovimientos;1.ApellidosContacto}

FORMULA FORMATO “YYYY/MM/DD” DE FECHAS EN CRYSTAL REPORT

Formula “FechaInicial” convierte un campo DateTime de una tabla de la base de datos a formato “YYYY/MM/DD”  para visualizar el valor en el reporte en este formato:

Código Fuente:

Local StringVar strFecha := ToText({?@FechaFin});
Local NumberVar intLonguitudFecha;

intLonguitudFecha := Length (strFecha);
Local StringVar strAnio := strFecha [1 to 4];
Local StringVar strMes := strFecha [5 to 6];
Local StringVar strDia := strFecha [7 to 8];

strFecha := strAnio + "/" + strMes + "/" + strDia;

FORMULA APLICANDO CONDICIONALES IF CON CRYSTAL REPORT

Formula “IndicadorConContrato”. Si el valor del campo  IndicadorConContrato en la base de datos arroja un true o false, la función permite mostrar en el reporte “SI” o “NO” dependiendo el caso.

if ({ReporteMovimientos;1.IndicadorConContrato}=true) then
    "SI"
else
    "NO"

FORMULA PARA MANEJO DE PAGINADO EN ESPAÑOL CON CRYSTAL REPORT

 
"Página" + " " +  ToText(PageNumber, 0) + " " + "de" + " " + ToText(TotalPageCount, 0)
 

 

Posted in Microsoft .NET | Leave a comment

Casos de Uso (CU)- Case Use – UML

CASOS DE USO (CU)

Los CU (Casos de Uso) no son parte del diseño (cómo), sino parte del análisis (qué) del sistema. Al ser parte del análisis ayudan a describir qué es lo que el usuario debe hacer y lo que el sistema debe responder.

 

NOTACIÓN:

Actor:

Se le llama Actor a toda entidad externa al sistema que guarda una relación con este y que le demanda una funcionalidad. Esto incluye a los operadores humanos pero también incluye a todos los sistemas externos así como a entidades abstractas como el tiempo. Ejemplo otro sistema, un PC, Una persona, Un dispositivo Electrónico.

 

Ovalo:

Representa el caso de Uso y dentro debemos colocar el nombre del CU. El nombre debe ser representativo a la funcionalidad a desarrollar.

Cuadrado:

Representa el límite de un sistema dentro deben adicionarse las demás notaciones.

Línea:

Permite asociar  el actor y el caso de uso la línea va graficada del actor al CU.

 

Tipos de Relaciones:

·         “comunica” (<<communicates>>): Relación (asociación) entre un actor y un caso de uso que denota la participación del actor en dicho caso de uso.  

·         <<include>>: Relación de dependencia entre dos casos de uso que denota la inclusión del comportamiento de un escenario en otro.

·         extiende (<< extends>>): Relación de dependencia entre dos casos de uso que denota que un caso de uso es una especialización de otro. Por ejemplo, podría tenerse un caso de uso que extienda la forma de pedir azúcar, para que permita escoger el tipo de azúcar (normal, dietético o moreno) y además la cantidad en las unidades adecuadas (cucharadas o bolsas).

 

Descripción del Caso de Uso:

Lo realmente útil de los CU es describir el flujo de eventos entre el usuario y el sistema. En este documento se explica la forma de interactuar entre el sistema y el usuario.

El siguiente Caso de uso “Administrar Países” describe detalladamente la interacción de un usuario con el sistema.  El caso de uso esta agrupado en forma general y permite describir como insertar, modificar, eliminar y consultar un país(es) en un sistema web X.

Observe que en la primera sección del formato se describen datos generales del CU, en la segunda sección describo las entradas “que permitirán un acercamiento al modelo de datos” y la Salida que debe arrojar el CU. En la sección flujo de datos se describe la forma en que interactúa el usuario con el sistema. Usted puede modificar este formato acorde a las necesidades.

Proyecto : Aplicación Web X.

CU-001

Nombre Caso de Uso: Administrar Países

Autor:

 

Omar Acosta

Fecha:

 

Octubre  01/ 2009

Resumen:

 

Insertar, modificar, eliminar y consultar datos de Países.

Actor:

 

administrador, superadministrador, Usuario Operador

Pre-Condición:     El usuario debe haberse logeado en el sistema.

Funcionalidad Detallada

Entradas

Salidas

Campo

Tipo

Requerido

Objeto

paisId

Int

Si

Caja de Texto

paisNombre

Varchar(80)

Si

Caja de Texto

 

 

 

 

Ø  Ingreso, modificación, eliminación o consulta  del registro(s) de países en Base de Datos.

 

Flujo de Eventos

Usuario

Sistema

1

Ingresa al menú de administración, País  de la aplicación web

2

Muestra todos los Países existentes en la aplicación web en la cuadricula.  Si el usuario tiene todos los permisos sobre las operaciones básicas se visualizara el panel de búsqueda en la parte superior del formulario y en la inferior el botón Ingresar y eliminar “deshabilitado”.

 

En la cuadricula aparece por cada fila de datos un botón editar para modificar la información del país y una casilla de verificación para eliminar la fila.

3

Ejecuta  una opción:

Eliminar

Ø  chequea casillas  de verificación de eliminar en la cuadricula de datos de países

 

 

Ø  Ejecuta el botón eliminar.

 

 

 

 

 

 

 

Editar

Ø  realiza clic en el botón  editar en la fila de la cuadricula a modificar

 

 

 

Ø  Modifica la información de los controles del formulario y ejecuta el botón guardar.

 

 

 

 

 

 

 

Adicionar

Ø  realiza clic en el botón Adicionar

 

 

 

Ø  Ingresa la información del país “Nombre” y da clic en botón guardar.

 

 

 

 

 

Búsqueda

Ø  Selecciona de la lista de opciones el parámetro de búsqueda por Nombre e ingresa el nombre del país que quiere buscar y da clic en el botón Incluir condición.

 

Ø  Da clic en el botón buscar.

 

4

 

 

Ø  Habilita el botón Eliminar si existe al menos un  caja de chequeo habilitada si no estará en estado deshabilitado.

 

Ø  Elimina los registros de la BD y almacena log de transacciones.

 

 

Ø  Muestra un mensaje que informa del estado de la transacción u operación realizada y cantidad de registros encontrados.

 

 

Ø  Visualiza el  panel de edición de datos donde visualizara la  información del país seleccionado y se habilitan los botones de Modificar  y Cancelar Operación.

 

Ø  Actualiza los datos del país en BD

 

 

Ø  Muestra un mensaje que informa del estado de la transacción u operación realizada

 

 

 

Ø  Visualiza la ventana de creación con los campos  necesarios para registrar un país y el botón guardar y cancelar operación.

 

Ø  Inserta el registro del país en BD

 

 

Ø  Muestra un mensaje que informa del estado de la transacción u operación realizada

 

 

 

Ø  El sistema visualiza las condiciones de búsqueda en la pantalla.

 

 

Ø  Visualiza en la cuadricula de datos los países que cumplen la condición de búsqueda

 

Ø  Muestra un mensaje que informa del estado de la transacción u operación realizada

 

Restricciones y Supuestos

Ø Si todas las validaciones se cumplen permite la creación, modificación o eliminación del país.

Ø Si el usuario autenticado no es administrador en el cargue del formulario debe re direccionar al login.

Ø Si la información se encuentra relacionada en otras tablas no debe dejar eliminar el registro y debe mostrar un mensaje claro.

 

Diagramas Caso de Uso:

Estos diagramas muestran la relación entre los actores y los CU del sistema. Representa la funcionalidad que ofrece el sistema en lo que se refiere a su interacción externa. En el diagrama de casos de uso se representa también el sistema como una caja rectangular con el nombre en su interior para el ejemplo "Sistema de Administración". Los casos de uso están en el interior de la caja del sistema (Administrar paises,Ciuades, contactos,Medios etc.) , y los actores fuera (Administrador y superadministrador), y cada actor está asociado a los casos de uso en los que participa mediante una línea. Ejemplo:

Un actor puede heredar las funcionalidades de otro como por ejemplo en la figura anterior se ve como el superadministrador hereda las funcionalidades del administrador permitiendo controlar todas las funcionalidades del sistema. Este tipo de relación se conoce en UML como “Generalización”. La siguiente figura muestra la herencia que existe entre un grupo de actores de un sistema X. por ejemplo se ve como el superadministrador hereda las funcionalidades del administrador y el a su  vez heredará las funcionalidades del actor (Editor, Asistente y Vendedor).

 

Fuentes:

Wikipedia

http://es.wikipedia.org/wiki/Caso_de_uso

Enterprise Architect

http://www.sparxsystems.com/

Descargar Manual UML en 24 Horas

http://omaraacostac.skydrive.live.com/self.aspx/P%c3%bablico/UML24Horas.pdf

Posted in Ingenieria de Software | Leave a comment

DATEDIFF (Transact-SQL)

DATEDIFF (Transact-SQL)

Devuelve el recuento (entero con firma) de los límites datepart que se han cruzado entre los valores startdate y enddate especificados.

Para obtener información general sobre todos los tipos de datos y funciones de fecha y hora de Transact-SQL, vea Tipos de datos y funciones de fecha y hora (Transact-SQL). Para obtener información y ejemplos comunes a los tipos de datos y funciones de fecha y hora, vea Usar datos de fecha y hora.

Sintasix:

DATEDIFF ( datepart , startdate , enddate )

datepart = Obtener la diferencia en (Años, Meses, Dias, Horas, Minutos o Segundos ) entre dos fechas.

startdate = Fecha Inicial

enddate = Fecha Final

Ejemplos en sql:

select DateDiff(minute, ‘2009/08/01’, ‘2009/08/05’) as DiferenciaMinutos

select

DateDiff(hour, ‘2009/08/01’, ‘2009/08/05’)as DiferenciaHoras

select

DateDiff(day, ‘2009/08/01’, ‘2009/08/05’) as DiferenciaDias

select

DateDiff(second, ‘2009/08/01’, ‘2009/08/05’) as DiferenciaSegundos

select

DateDiff(month, ‘2009/08/01’, ‘2009/08/05’) as DiferenciaMes

select

DateDiff(year, ‘2008/08/01’, ‘2009/08/05’) as DiferenciaAnnio

Resultados:

 

 

Fuente:

http://msdn.microsoft.com/es-es/library/ms189794.aspx

Posted in SQL Server | Leave a comment

Encriptar la Session connectionStrings del archivo web.config aspx

 

1. Encriptar Archivo Web.config

 

En el servidor donde público la aplicación web, ejecute la consola de comandos y ubíquese en el siguiente directorio:

C:\Windows\Microsoft.Net\Framework\v2.0.50727

 

Para encriptar la sesión connectionStrings del archivo web.config utilice el comando  aspnet_regiis que nos permite encriptar  sesiones del web.config  publicado en IIS como un directorio virtual o web site.

 

Ejecute el siguiente comando para encriptar la sesión  connectionStrings del directorio virtual WebFactura publicado en un IIS 6.0 o 7.0.

C:\Windows\Microsoft.Net\Framework\v2.0.50727>aspnet_regiis -pe "connectionStrings" -app "/WebFactura"

 

Si usted abre el archivo web.Config se dara cuenta que Sesion connectionStrings que se encuentra en texto no claro o encriptada.

 

 

2. Conceder autoridad para obtener acceso a un contenedor de claves RSA

 

     Ejecute el siguiente comando la figura ilustra el resultado:

 

C:\Windows\Microsoft.Net\Framework\v2.0.50727> aspnet_regiis -pa "NetFrameworkConfigurationKey"  "NT AUTHORITY\NETWORK SERVICE"

 

 

espero les sirva este articulo para que cuando realicen la publicación de un sitio web o directorio virtual  para el ejemplo WebFactura se encripte y se protejan las credenciales de autenticación a la Base de Datos.

 

 

Posted in Microsoft .NET | Leave a comment

Clase EventLog en c# – escribir en el log de eventos de windows

1.  CLASE QUE PERMITE ESCRIBIR EN EL LOG DE EVENTOS DE UNA MAQUINA WINDOWS.

using System;

using System.Collections.Generic;

using

System.Text;

using

System.Diagnostics;

namespace

ConsoleApplication1

{

public class CLogEvent

{

/// <summary>

/// Crea y escibe mensajes en el log de eventos de windows

/// </summary>

/// <param name="Mensaje">mensaje asociado a la escritura en el log de eventos</param>

/// <param name="Error">Escribe en el log de eventos de windows como error si recibe true </param>

public static void LogEvent(string Mensaje, bool Error)

{

EventLog myLog = new EventLog();

try

{

if (!EventLog.SourceExists("ErroresApp"))

EventLog.CreateEventSource("ErroresApp", "ErroresApp");

myLog.Source = "ErroresApp";

//escribe en el log de eventos el mensaje recibido

if (Error)

myLog.WriteEntry(DateTime.Now + " " + Mensaje, EventLogEntryType.Error); //tipo error

else

myLog.WriteEntry(DateTime.Now + " " + Mensaje, EventLogEntryType.Information); //tipo informaci¢n

}

catch (Exception ex)

{

throw new Exception(ex.Message);

}

finally

{

myLog.Dispose();

myLog = null;

}

}

}

}

 

1.  EJEMPLO EN UNA APPLICACION DE CONSOLA DEL USO DE LA CLASE CLogEvent

using

System;

using

System.Collections.Generic;

using

System.Linq;

using System.Text;

namespace

ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

//la clase al ser tipo static puede ser llamada globalmente desde la aplicaci¢n

//sin necesidad de instanciar la clase.

CLogEvent.LogEvent("Esto es mensaje de tipo error",true);

CLogEvent.LogEvent("Esto es mensaje de tipo informativo", false);

}

}

}

Posted in Microsoft .NET | Leave a comment

funcion isNumeric() en c# para .net

/// <summary>

/// metodo que retorna true o false si un valor de tipo string es un número en c#

/// </summary>

/// <param name="val">Número a verficar</param>

/// <param name="NumberStyle">Stilo</param>

/// <returns>true si es un número</returns>

public bool isNumeric(string val, System.Globalization.NumberStyles NumberStyle)

{

Double result;

try

{

return Double.TryParse(val, NumberStyle, System.Globalization.CultureInfo.CurrentCulture, out result);

}

catch (Exception ex)

{

throw new Exception(ex.Message,ex);

}

}

Posted in Microsoft .NET | Leave a comment